package do1.mobo.widget;

import android.content.Context;
import android.os.Handler;
import android.util.Log;
import android.view.Gravity;
import android.widget.Toast;

public class MyToast {

	private static final String TAG = "MyToast";

	public static final int LENGTH_MAX = -1; //show until hide() function invoked

	boolean mCanceled = true;

	Handler mHandler;

	Context mContext;

	Toast mToast;

	public MyToast(Context context) {

	this(context,new Handler());

	}

	public MyToast(Context context,Handler h) {

	mContext = context;

	mHandler = h;

	mToast = Toast.makeText(mContext,"",Toast.LENGTH_SHORT);

	mToast.setGravity(Gravity.BOTTOM, 0, 0);

	}

	public void show(int resId,int duration) {

	mToast.setText(resId);

	if(duration != LENGTH_MAX) {

	mToast.setDuration(duration);

	mToast.show();

	} else if(mCanceled) {

	mToast.setDuration(Toast.LENGTH_LONG);

	mCanceled = false;

	showUntilCancel();

	}

	}

	public void show(String text,int duration) {

	mToast.setText(text);

	if(duration != LENGTH_MAX) {

	mToast.setDuration(duration);

	mToast.show();

	} else {

	if(mCanceled) {

	mToast.setDuration(Toast.LENGTH_LONG);

	mCanceled = false;

	showUntilCancel();

	}

	}

	}

	public void hide() {

	Log.d(TAG,"hide");

	mToast.cancel();

	mCanceled = true;

	}

	public boolean isShowing() {

	return !mCanceled;

	}

	private void showUntilCancel() {

	if(mCanceled)

	return;

	mToast.show();

	mHandler.postDelayed(new Runnable() {

	public void run() {

	showUntilCancel();

	}

	},3000);

	}

	}

